package Soligee.controller.facade.sessionFacade;

import Soligee.model.vo.cadastros.ProdutoVO;
import Soligee.model.vo.lancamentos.ItensNFEntradaVO;
import Soligee.model.vo.lancamentos.ItensOrcamentoVO;
import Soligee.model.vo.lancamentos.ItensVendaVO;
import Soligee.model.vo.lancamentos.NFEntradaVO;
import Soligee.model.vo.lancamentos.VendaVO;
import java.io.IOException;
import java.util.Date;
import java.util.List;

public interface SessionFacadeCadastrar {

    boolean cadastrarUsuario(int codUsuario,String login, int nivel, String senha,String nome)throws Exception;

    boolean cadastrarPessoaFisica (int casaPropria,int codPessoa, String nome,String telefoneUm, String telefoneDois, String telefoneTres,Date dataNasc,String rg,String email,String paginaWeb,
                                    String referencias,String cpf, String caminhoImagem, Date dataCadastro, String obs, String localTrab, double salario,int seprocado,String localNasc,
                                   int codEndereco,int tipoEndereco,String rua, String bairro, String cep, String numero, String complemento,int codCidade)throws IOException, Exception;

    boolean cadastrarPessoaJurididca(int codPessoa, String nome,String telefoneUm, String telefoneDois, String email,String paginaWeb,String caminhoImagem,Date dataCadastro,String razaoSocial,String cnpj,String inscEstadual,
                                     int codEndereco,int tipoEndereco,String rua, String bairro,String cep, String numero, String complemento,int codCidade)throws Exception;

   boolean cadastrarFornecedor(int codPessoa,String nome,String telefoneUm, String telefoneDois, String email,
                                        String paginaWeb, String caminhoImagem, Date dataCadastro,String razaoSocial,String cnpj, String inscEstadual,
                                        String ramoAtividade, int codEndereco,int tipoEndereco,String rua, String bairro, String cep, String numero, String complemento,
                                        int codCidade)throws Exception;

   boolean cadastrarOrcamento(int codVendedor,int codOrcamento,int codCliente,Date dataOrcamento, Date validadeProposta,int quantidadeProduto,int planoPagamento,
                                       double valorTotalVista,double valorTotalPrazo,String observacoes, List<ItensOrcamentoVO> listaItens,List<ProdutoVO> listaProdutos)throws Exception;

   boolean cadastrarProduto (int codSubcategoria,int codCategoria, int codMarca,int codProduto,String descricao,String unidade,double qtdadeEstoque,
                             double quantidadeMinima,double precoCusto,double precoVenda, double percentualVenda)throws Exception ;

    boolean cadastrarVendedor (int codVendedor, String nome,double comissaoVendaPrazo,double comissaoVendaVista)throws Exception;

    boolean cadastrarNFEntrada (int codNFEntrada, Date data_emissao,Date data_entrada,int numero_nf, int qtdadeParcela, double percentualIPI,
                                       double percentual_frete,double percentual_desconto,double percentual_embalagem,double valortotal_produto,double valortotal_nota,
                                       int codFornecedor, List<ItensNFEntradaVO> listaItens,List<ProdutoVO> listaProdutos)throws IOException, Exception;

    boolean cadastrarCategoria (int codCategoria,int codMarca,String descricao, Double comissaoVenda) throws Exception;

    boolean cadastrarSubcategoria (int codSubcategoria, int codCategoria, String descricao) throws Exception;

    boolean cadastrarMarca (int codMarca, String descricao) throws Exception;

    boolean cadastrarRepresentante (int codRepresentante, String nome, String telefoneUm, String telefoneDois, String email, String paginaWeb, String caminhoImagem, Date dataCadastro,
                                    int codEndereco,String rua, String bairro, String cep, String numero, String complemento,int codCidade) throws Exception;

    boolean cadastrarVenda(int codVenda, Date dataVenda, double desconto, double acrescimo, int quantidadeParcela, double totalItens, double totalVendas,
            int codFormaPagamento, int tipoCliente, int codCliente, int codVendedor,List<ItensVendaVO> listaItens,List<ProdutoVO> listaProdutos)throws Exception;

    boolean cadastrarConta(int codConta, String descricao, double valorConta, Date vencimento, int situacao)throws Exception;
    
    public boolean cadastrarParcelaVenda(VendaVO venda, double valorParcela, int numParcela, int numeroDeParcelas, int situacao, Date dataVencimento)throws Exception;

    public boolean cadastrarParcelaNF(NFEntradaVO nf, double valorParcela, int numParcela, int numeroDeParcelas, int situacao, Date dataVencimento)throws Exception;

    public boolean cadastrarContaAPagar (int codConta, String descricao, double valorConta, Date vencimento, int situacao) throws Exception;

    public boolean cadastrarCheque(int codCheque,String agencia, String numConta, String numCheque, int situacao, String emitente, String obsReferente, Date dataLancamento, Date dataDeposito, double valor, int cod_banco) throws Exception;

    public boolean cadastrarBanco (int cod_banco, String nome_banco, boolean ativo) throws Exception;

    public boolean cadastrarLancamentoCaixa (String descricao, double debito, double credito, int operacao) throws Exception;

    public boolean cadastrarLembrete (int codLembrete, Date data_lembrete, String descricao) throws Exception;

    }
